19. Acceso remoto con SSH.


19.1. Introducción. Conceptos básicos.

19.2. Instalación del servidor SSH.

19.3. Clientes de acceso remoto: Putty, WinSCP.

19.3.1. grdesktop, accediendo a Windows desde Linux.

19.4. Copia segura de archivos y directorios.

19.5. Ejecutando aplicaciones gráficas del servidor.

19.6. Accediendo gráficamente: Vino(VNC), FreeNX y Vinagre (VNC).

19.7. Haciendo SSH todavía más seguro con claves RSA.

19.8. Screen.


19.1. Introducción. Conceptos básicos.

SSH son las siglas de Secure S hell, protocolo para acceder a equipos remotos de una forma segura. SSH es como el protocolo Telnet, nos permite administrar un equipo de forma remota, sin embargo, a diferencia de Telnet aquí la información viaja cifrada y por tanto protegida de usuarios “no autorizados”.


Si administras remotamente un equipo fuera de tu Intranet (red local) deberías utilizar SSH. Ten en cuenta que al utilizar Telnet comprometes seriamente tu seguridad, tus claves viajarán en texto plano así como las órdenes

OpenSSH es la implementación libre de SSH e incluye los protocolos SFTP (SSH File Transfer Protocol) y SCP (Secure Copy Protocol). SFTP y SCP permiten básicamente subir y descargar archivos y directorios remotos de forma segura aunque el canal de comunicaciones (Internet) sea abierto e inseguro. Además SSH comprime y después cifra los datos transmitidos con lo que es más eficiente.

Páginas de visita aconsejada son la entrada de la Wikipedia http://es.wikipedia.org/wiki/Secure_Shell, la Guía de Ubuntu, http://www.guia-ubuntu.org/index.php?title=Servidor_ssh así como un manual de SSH del excelente portal entre Tuxes y pepinos, http://tuxpepino.wordpress.com/2007/05/11/ssh-el-dios-de-la-administracion-remota/.

19.2. Instalación del servidor SSH.

Para instalar un servidor SSH basta instalar el paquete ssh:

sudo apt-get install ssh

Nada más instalar dicho paquete tenemos el servidor SSH listo para usar, si quieres realizar algún ajuste deberás realizar dos pasos:

1. Modificar el archivo de configuración

sudo gedit /etc/ssh/sshd_config

2. Reiniciar el servicio:

sudo /etc/init.d/ssh restart

Dentro de los parámetros que puedes desear cambiar se encuentran:

1. AllowUsers miUsuario1 miUsuario2, es decir, permitimos sólo a miUsuario1 y miUsuario2 conectarse remotamente.

2. PermitRootLogin no, para no permitir al usuario root conectarse remotamente.

3. ForwardX11 yes, para poder ejecutar aplicaciones gráficas remotamente.

4. Port 5077, podemos cambiar el puerto para conseguir una mayor seguridad (por ejemplo que sea 5077).

5. Descomentar (quitar la almohadilla) #Banner /etc/issue.net y agregar el contenido deseado para tus visitantes. Típicamente mostrarás un mensaje de aviso de que el servidor está disponible sólo para usuarios autorizados editando el archivo /etc/issue.net.

6. MaxAuthTries 4, número máximo de intentos fallidos de conexión permitidos por conexión, por defecto es seis, podemos reducirlo, por ejemplo, a tres o cuatro.


AllowUser es una directiva muy potente, así puedes restringir que usuarios pueden conectarse y desde qué máquinas, por ejemplo, miUsuario1@192.168.1.* permito el acceso a miUsuario1 desde todas las máquinas de la red local (suponiendo que la dirección de red es 192.168.1.0).

Para consular todas las opciones disponibles, escribe en la consola:

man sshd_config

Una vez instalado y configurado el servidor SSH, vamos a acceder desde un cliente en Linux, la sintaxis sería:

ssh cuentaServidor@dirIpServidor

Sin embargo, si el nombre de la cuenta local es el mismo que la del servidor SSH bastará teclear:

ssh dirIpServidor

En ambos casos, la primera vez que nos conectemos debemos aceptar la clave pública del servidor: yes. Luego observa el mensaje que hemos personalizado “Bienvenido al servidor SSH”. Una vez que nos da la bienvenida podemos ejecutar cualquier orden en el servidor.


19.3. Clientes de acceso remoto: Putty, WinSCP.

Aunque Linux trae un cliente SSH por defecto, no es la única alternativa. Así por ejemplo si utilizas Windows puedes usar Putty, disponible en http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. Se trata de un cliente Telnet y SSH libre. Se trata de un ejecutable, es decir, no precisa instalación, basta bajarlo y hacer doble clic sobre el.

Como ves una vez lanzado, debes seleccionar el tipo de conexión (SSH), la dirección IP del servidor (en la figura 192.168.1.14) y el puerto (22 por defecto).

Si habitualmente accedes remotamente a este equipo puedes guardar la sesión asignándola un nombre (Save), para luego poder recuperarla simplemente haciendo doble clic sobre ella y evitando tener que volver a escribir la dirección IP y el puerto.

Una vez que hayas acabado haz clic en Open.

Observa como te pregunta por tu nombre de cuenta (login) y contraseña.

Una vez que la autentificación sea exitosa podrás administrar tu servidor Linux desde un PC cliente con Windows como sistema operativo.

Otra opción es WinSCP, disponible en http://winscp.net/eng/docs/lang:es. La página de descarga es http://winscp.net/eng/download.php. Para instalarla en el idioma de Cervantes debes instalar no sólo Installation package (paquete de instalación) sino también Multilanguage installation package, seleccionando Español en la instalación.

Una vez instalada se encuentra en Inicio, Todos los programas, WinSCP, WinSCP.

Se trata de una aplicación libre. Es un cliente gráfico de SFTP y presenta un entorno amigable que nos facilita la transferencia de archivos entre el cliente (que utiliza Windows) y el servidor remoto.

Debes indicar la dirección IP o el nombre del servidor SSH, el puerto, el nombre de usuario y la contraseña.

Observa que es un cliente SFTP pero también soporta SCP y FTP (File Transfer protocol).

La primera vez que entres al servidor te informará de que debes aceptar la clave pública del servidor.

Debes aceptarla haciendo clic en Si.

Observa dos paneles: el de la izquierda es tu disco local, el de la derecha es el equipo remoto al que te has conectado por SSH.

La utilización del programa es bastante intuitiva. Así, puedes arrastar y soltar archivos con una interfaz al estilo del Comandante Norton, también puedes hacer clic con el botón derecho del ratón sobre cualquier panel para acceder al menú contextual que te permitirá borrar, renombrar, editar, mover, etc.

Desde Opciones, Opciones… puedes personalizar la aplicación. Así en Entorno, Interfaz puedes cambiar entre la interfaz Comandante Norton o la clásica del Explorador de Windows así como el tema: Sistema, Office XP, Office 2003. En Editor puedes añadir un editor de tu agrado y en Integración indicas donde tienes el Putty instalado para que te permita invocarlo desde el propio programa desde el icono .

¿Y para Linux? Para Linux podemos copiar archivos y directorios desde el propio Nautilus. Bastará con lanzarlo y hacer clic en el botón Cambiar entre la barra de lugares y texto (situado en la esquina superior izquierda):

En la barra de direcciones tienes que escribir: ssh://login@dirIPServidor.

Observa que podemos trabajar con el sistema de archivos remoto de la misma forma que lo hacemos con el local.

También podíamos haberlo hecho desde Lugares, Conectar con el servidor…(tanto monta, monta tanto, Isabel como Fernando)


19.3.1. grdesktop, accediendo a Windows desde Linux.

También puede serte útil poder acceder a Windows desde Linux. grdesktop nos permite precisamente eso. Se trata de un frontend (una interfaz) GNOME para el cliente remoto rdesktop.

Se instala con el paquete grdeskop y se lanza en Aplicaciones, Internet, Remotedesktop Client.

Bastará con indicar la dirección IP del ordenador que ejecuta Windows, el nombre de usuario y la contraseña. También deberás indicar el dominio (si la máquina se ejecuta en un entorno gestionado por un servidor de dominios) y la versión de Windows. Cuando hayas acabado haz clic en Ejecutar.

Además debes habilitar el acceso remoto en Windows desde Panel de Control, Sistema, la pestaña Remoto, Escritorio Remoto, haz clic en la casilla Permitir que los usuarios se conecten de manera remota a este equipo. En Seleccionar usuarios remotos…, puedes elegir qué usuarios deseas que se conecten.

19.4. Copia segura de archivos y directorios.

Para copiar archivos y directorios de forma segura utilizaremos la orden scp. La sintaxis básica es scp origen destino, veamos varios ejemplos:

* Subir un archivo (miArchivoLocal) al ordenador remoto (dirIPServidor):

Sintaxis: scp miArchivoLocal usuario@dirIPServidor:miArchivoRemoto

Ejemplo:

scp hola.txt joe@192.168.153.132:holaRemoto.txt

* Subir un directorio (miDirectorioLocal) al ordenador remoto:

Sintaxis: scp –r miDirectorioLocal usuario@dirIPServidor:miDirectorioRemoto

Ejemplo:

scp –r miDirectorio joe@192.168.153.132:miDirectorioRemoto.

* Descargar un archivo remoto (miArchivoRemoto) al ordenador local:

Sintaxis: scp usuario@dirIPServidor:miArchivoRemoto miArchivoLocal

Ejemplo:

scp joe@192.168.153.132:holaRemoto.txt holaVuelve.txt

* Descargar un directorio remoto al ordenador local:

Sintaxis: scp –r usuario@dirIPServidor:miDirectorioRemoto miDirectorioLocal

Ejemplo:

scp –r joe@192.168.153.132:miDirectorioRemotomiDirectorioVuelve

Recuerda que si configuraste SSH para trabajar con otro puerto debes incluir el modificador –P seguido del puerto que hayas indicado: scp –P numeroPuerto …

También puedes querer utilizar sftp como el sustituto seguro de FTP. Consulta el capítulo de ftp para mayor información, veamos aquí una sesión típica:


1. Abre la conexión con sftp usuario@dirIPServidor

Ejemplo:

sftp joe@192.168.153.132

2. Pregunta por las ordenes disponibles:

sftp>help


[…]get remote-path [local-path] Download file[...]

3. Descarguemos un fichero:

get holaRemoto.txt

4. Cerramos la sesión:

quit


19.5. Ejecutando aplicaciones gráficas del servidor.

Para ejecutar una aplicación gráfica remotamente basta con incluir el parámetro X, así un ejemplo para jugar al conecta 4 sería:

Sintaxis: ssh –X usuario@dirIPServidor aplicaciónX

Ejemplo:

ssh –X joe@192.168.153.132 kwin4


Recuerda que precisas previamente haber editado el archivo de configuración: sudo gedit /etc/ssh/sshd_config y cambiar el parámetro ForwardX11 yes, para poder ejecutar aplicaciones gráficas remotamente.

Finalmente debes reiniciar el servicio: sudo /etc/init.d/ssh restart.


19.6. Accediendo gráficamente: Vino(VNC), FreeNX y Vinagre (VNC).

La opción por defecto para acceder remotamente a un escritorio en Ubuntu es Vino. Esta aplicación viene ya instalada y nos permite administrar remotamente otro equipo. Sigue la secuencia Sistema, Preferencias, Escritorio Remoto.

Observa en la primera pestaña General debes permitir a otros usuarios ver tu escritorio y controlarlo. Fíjate que quizás te interese que alguien pueda sólo visualizar el escritorio.

Además puedes solicitar en el servidor confirmación y requerir al usuario remoto una contraseña para mayor seguridad.

Si la seguridad es muy importante para ti, en la pestaña Avanzado puedes retocar la configuración de Vino. Una primera idea sería cambiar el puerto por defecto.

Además puedes seleccionar Requerir cifrado para que la conexión X sea segura.


Recuerda que para que puedas acceder desde fuera de la Intranet debes abrir el puerto en el Router en el que hayas configurado Vino. Lo mismo tendrás que hacer si tienes instalado un cortafuegos.

En el cliente instala el paquete vncviewer y ejecuta:

vncviewer dirIPRemota

Si utilizas otro puerto deberás teclear: vncviewer dirIPRemota:puerto.

Observa que en la parte del servidor deberás permitir o rechazar la conexión remota si indicaste Pedir confirmación.

Si hiciste clic en Permitir desde el cliente se podrá acceder al servidor. Como puedes comprobar en la figura adjunta, puedes desconectar en el servidor a los usuarios remotos en cualquier momento, además te informa desde que IP están accediendo.


Desde Windows puedes instalar RealVNC. Dirígete a la dirección Web http://www.realvnc.com/index.html, navega a productos (Products), descarga de software (Download software). La versión gratuita (Free Edition) no funciona en Vista, si tienes XP haz clic en Download & use (descarga y usa) en la columna de Free Edition. Tendrás que rellenar los campos típicos: nombre, correo, empresa, número de equipos, tipo de uso del software y comentarios; cuando hayas acabado haz clic en Proceed to download, proceder a la descarga.

La instalación no tiene ningún secreto: siguiente (Clic Next to continue, haz clic en siguiente para continuar), aceptar el contrato (I accept the agreement), directorio de instalación, tipo de instalación (Full, completa), nombre de la carpeta de programas (RealVNC).

El último paso te permite crear accesos directos y configurar el servidor VNC como un servicio, de suerte que se arranque automáticamente.

Finalmente te presenta un resumen de los parámetros de configuración de la instalación, haz clic en Install.

Para lanzar el cliente, navega a Inicio, Todos los programas, RealVNC, Vnc Viewer 4, Run VNC Viewer.

Tienes que indicar la dirección IP o el nombre del servidor, en nuestro caso la máquina Ubuntu donde hemos configurado Vino.

Observa la comodidad de poder administrar remota y gráficamente un ordenador Linux desde un ordenador cliente con Windows instalado.

Sin embargo, aún hay más. También puedes acceder desde Linux a Windows, pues has instalado el VNC Server.

Escribe en la consola de Linux: vncviewer dirIPWindows:5900 y tendrás el escritorio de Windows en tu Linux.

Finalmente una anécdota. ¿Por qué la pantalla muestra solo la mitad de nuestro escritorio Windows? La respuesta es que para esta prueba estamos emulando Linux en una máquina virtual. Desde esta máquina accedo a Windows pero claro está en la parte derecha se muestra el emulador (VMWare o Virtual PC con Linux) y esto crea un bucle de infinitos sistemas operativos…

FreeNX es otra posibilidad. NX te permite correr sesiones X desde clientes en Windows, Linux, Mac OS X y Solaris a servidores con Linux y Solaris. La página oficial es http://www.nomachine.com/ y las versiones libres son sólo las de Linux y Solaris. FreeNX es una solución eficiente (la información va comprimida) y segura (se basa en SSH).

Para la instalación hemos comprobado que muchos repositorios no funcionaban tan bien como desearíamos, finalmente hemos recurrido a los que aconseja http://inf-o.no-ip.org/2008/05/18/instalar-freenx-en-ubuntu-804-hardy-heron/.


Para instalar FreeNX en Ubuntu vamos a añadir paquetes desde un nuevo repositorio.

1.Empezamos la instalación en el servidor, más concretamente, abre una consola y escribe:

sudo gedit /etc/apt/sources.list

2. Ahora añade al final de la lista las siguientes líneas:

deb http://ppa.launchpad.net/marceloshima/ubuntu hardy main
deb-src http://ppa.launchpad.net/marceloshima/ubuntu hardy main

3. Guarda tu sources.list y actualiza el sistema:

sudo apt-get update

4. El siguiente paso es instalar el paquete freenx-server y sus dependencias:

sudo apt-get install freenx-server

También podías haberlo descargado desde la página oficial http://www.nomachine.com/download.php en el enlace NX Free Edition for Linux, la versión NX Free Edition for Linux DEB-i386. En la parte del servidor hemos acabado, ahora debemos configurar el cliente.

5. En el ordenador cliente, abre una consola y descarga el paquete http://64.34.161.181/download/3.2.0/Linux/nxclient_3.2.0-9_i386.deb o desde la página oficial NX Client Products, NX Client for Linux, NX Client DEB for Linux –i386.

6. Instala dicho paquete:

sudo dpkg -i nxclient_3.2.0-9_i386.deb

7. Abrimos el cliente NX: Aplicaciones, Otras, NX Client for Linux.

Obtendremos la primera pantalla del asistente que nos guiará por los pasos necesarios para la correcta configuración. Haz clic en Next para pasar a la siguiente pantalla.

8. En la segunda pantalla debemos indicar un nombre para la sesión, el nombre o dirección IP así como el puerto (FreeNX se apoya en SSH, es el 22) del equipo al que vas a conectarte (en el que debes haber instalado el servidor FreeNX).

También debes seleccionar el tipo de conexión Internet que poseas: MODEM, ISDN, ADSL, etc.

9. El siguiente paso es seleccionar el tipo de sistema operativo (en nuestro caso Unix, Linux fue su hijo más aventajado), así como el gestor de ventanas (GNOME, KDE) y el tamaño del escritorio remoto.

La opción Available area nos permite visualizar el tamaño máximo del escritorio remoto disponible.

10. Para acabar puedes dejar la opción por defecto Create shortcut on desktop, para tener un acceso directo o lanzador en el escritorio. Pulsa el botón Finish, finalizar.

Si seleccionas Show the Advanced Configuration dialog, tendrás acceso a una ventana de diálogo con todas las opciones disponibles de configuración del cliente NX.

11. Una vez finalizado el asistente procedemos a conectarnos al servidor.

Debemos indicar la cuenta a la que accedemos (nombre de usuario y contraseña) así como la sesión (recuerda que la habíamos nombrado miSesion).

12. Finalmente debemos aceptar la clave pública RSA del servidor y como puedes observar a la derecha tenemos accesible el escritorio remoto y sus aplicaciones X.

Observa que NX nos permite también desde Windows acceder al escritorio y las aplicaciones X de Linux.

El proceso de configuración es el mismo que el que acabamos de explicar, la única diferencia es que debes instalar el cliente X para Windows, NX Client for Windows en http://www.nomachine.com/download-client-windows.php.

Finalmente otra opción es Vinagre, la página oficial es http://www.gnome.org/projects/vinagre/. Las características más novedosas incluyen la capacidad de conectarse a varios servidores VNC haciendo uso de las socorridas pestañas, llevar una lista de marcadores o favoritos de nuestros servidores VNC más frecuentes o más recientemente usados y avahi, una especie de navegador que busca en la red, servidores VNC disponibles.

Vinagre está instalado por defecto en Ubuntu. Se encuentra en Aplicaciones, Internet, Visor de escritorios remotos.

Haz clic en el botón Conectar para acceder remotamente a un servidor VNC:

En el cuadro de texto anfitrión debes indicar el nombre o dirección IP del servidor al que quieres conectarte, además deberás indicar el puerto del servidor, por defecto es 5900.

Observa en la figura que tenemos dos pestañas, una se conecta a un servidor Linux y otra a un equipo con Windows.

En la pestaña Marcadores podrás definir y acceder rápidamente a tus servidores VNC favoritos.

Además con la cámara podrás Capturar pantallas de los escritorios remotos.

19.7. Haciendo SSH todavía más seguro con claves RSA.

Como bien sabes una palabra de paso debe ser secreta: difícil de adivinar (no sea tu nombre, apodo o el de tu mascota, que tampoco contenga el número de tu dni, fecha de nacimiento, etc.), no ser una palabra del diccionario, contenga mayúsculas y minúsculas, letras y números, sea lo suficientemente larga, … Sin embargo, siempre es una medida de seguridad que deja mucho de desear, sobre todo porque tendemos a cometer ciertos errores: poner siempre las mismas claves, utilizar fechas o apodos que nos son fáciles de recordar, etc.

Te proponemos en éste epígrafe un modo mucho más avanzado, utilizando las claves RSA. Este modelo se basa en dos claves, una pública que deberás publicar al servidor donde quieras acceder y una privada que deberá permanecer como su propio nombre indica, privada y que SOLO TÚ DEBES POSEER.

Lo primero que tenemos que realizar es general el par de claves dsa pública y privada. Esto se realiza con la orden: ssh-keygen –t dsa.

Luego te pregunta que donde quieres salvar la clave privada (haz clic en INTRO para dejarlo en /home/joe/.ssh/id_dsa).

Observa que debes proveer una frase, procura que sea difícil de adivinar. No utilices palabras del diccionario, una idea sería escribir una frase donde ciertas palabras tengan faltas de ortografía: “Esto n0–en vez de una o- lo adibina nadie”. Finalmente te indica donde guarda la clave pública: /home/joe/.ssh/id_dsa.pub.

Si te obsesiona la seguridad, puedes aumentar el tamaño de la clave con el comando: ssh-keygen -t rsa -b 4096. El tamaño en bits de la clave será 4096 en vez de 2048 que es el tamaño por defecto.

El siguiente paso será instalar nuestra clave pública en las claves autorizadas del equipo remoto. Esto se realiza con la orden:

ssh-copy-id -i ~/.ssh/id_rsa. pub usuario@dirIp ServidorRemoto

Observa que hemos bloqueado la clave, introduce la contraseña para desbloquearla y haz clic en Aceptar.

Fíjate en la siguiente pantalla donde tendrás que introducir la contraseña del usuario del equipo remoto al que quieres instalar la clave.

Finalmente bastará conectarnos al servidor remoto con ssh usuario@dirIpServidorRemoto y no precisaremos introducir la clave.

Como puedes comprobar es más seguro y cómodo.


19.8. Screen.

Screen es un gestor de terminales. Ofrece dos funcionalidades que lo hacen único, la primera es la capacidad de crear tantas sesiones o consolas virtuales como deseemos con CTRL + A + C, esto es interesante si accedes desde un servidor sin X, es decir, en modo texto, si no pues nos será mas práctico las típicas pestañas de nuestros terminales. Con CTRL + A + [0..9] o CTRL + A + [n ó p] puedes moverte por las distintas emulaciones o sesiones.

Está instalado por defecto en Ubuntu, si no lo tienes presente en tu sistema, el paquete es screen.


Sin embargo, lo que lo hace más valioso es la capacidad de enlazar y desligar sesiones, incluso desde equipos distintos. Así puedes abrir con screen una sesión SSH desde un equipo, desligarla y desde otro equipo reaunudar el trabajo en el servidor donde lo dejaste.

Veamos cómo hacerlo, sigue los siguientes pasos:

1. sudo apt-get install screen (normalmente no precisarás realizar este paso).

2. Lanza screen: screen.

3. Accede remotamente por SSH al servidor: ssh joe@dirIPServidorRemoto. Puedes por ejemplo, lanzar una tarea “pesada” como una copia de seguridad o en el ejemplo, para que se vea más claramente en la figura vamos a navegar a Wikipedia desde el navegador Lynx: lynx http://www.wikipedia.org.

4. Desconecta o desliga la sesión, haz clic en Ctrl. + A + D. Deberás observar:

Screen

[detached]

5. Desde el mismo ordenador u otro accede por SSH al servidor remoto y lanza screen y vuelve a enlazar con la sesión mediante: screen –r. Si hubiera varias sesiones te lo indicaría y deberás elegir con la que quieras enlazar: screen –r IdentificadorSesión. Observa que reanudas por donde lo dejaste. Como esperamos que sepas apreciar esta herramienta es un diamante en bruto.